package gruppenkalenderProjekt;

import gruppenkalenderProjekt.data.Benutzer;
import gruppenkalenderProjekt.data.Kalender;
import gruppenkalenderProjekt.data.Kalendereintrag;
import gruppenkalenderProjekt.data.Kategorie;
import java.awt.Color;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.sql.Date;
import java.sql.Time;
import java.util.Vector;

/**
 *
 * @author Rathke, Thies
 * @coauthor Gruppe2
 */
public class TestClientLocalhost {

    public static void main(String[] args) {
        try {
            // Zunächst benötigen wir eine Verbindung mit der Verwaltung
            Verwaltung verwaltung =
                    (Verwaltung) Naming.lookup("rmi://127.0.0.1:1099/Verwaltung");

            /*
             * Wenn wir hier ankommen, dann besteht eine Verbinung zum Server.
             * Wäre die Verbindung nicht zustande gekommen, so wäre eine Exception
             * ausgeworfen worden und das Programm wäre in den entsprechenden
             * Catch-Block (s.u.) gesprungen.
             */
            System.out.println("Verbindung zu Server hergestellt...");


            //Kategorien auslesen Testen
            Vector<Kategorie> kategorien = verwaltung.getAlleKategorien();
            System.out.println("Ausgabe aller Kategorien aus der DB");
            System.out.println("Anzahl Kategorien: "+kategorien.size());

            for(int i = 0; i < kategorien.size(); i++){
            System.out.println("---------------------------------------------");
            System.out.println("Name: "+kategorien.elementAt(i).getBezeichnung());
            System.out.println("ID: "+kategorien.elementAt(i).getKategorieID());
            System.out.println("Farbe: "+ kategorien.elementAt(i).getFarbe());

            }
             


            
            /* //Kalendereintrag einfuegen, aendern, loeschen
            
            Kalendereintrag e = verwaltung.createKalendereintrag("Teste Update Kalendereintrag", kategorien.elementAt(2), verwaltung.getBenutzerMitID(3),
            "blabla", "W114", new Date(2012,12,17), new Time(15,0,0),new Date(2012,12,18), new Time(15,0,0),
            false, 0, false, verwaltung.getAlleBenutzer(), null);
            System.out.println("Eintrag mit der ID: "+e.getKalendereintragID()+" angelegt");

            e.setAlarm(true);
            e.setErinnerung(true);
            Vector<Benutzer> tempUser = e.getTeilnehmer();
            tempUser.removeElementAt(1);
            tempUser.removeElementAt(0);
            e.setTeilnehmer(tempUser);
            verwaltung.updateKalendereintrag(e);

            //Kalendereintrag e = verwaltung.getKalendereintragMitID(14);

            //verwaltung.deleteKalendereintrag(e);
             */
            



            /*//Kategorie einspeichern
            Kategorie k = verwaltung.createKategorie("businesss", Color.gray);

            //aendern
            k.setBezeichnung(k.getBezeichnung()+"add");
            verwaltung.updateKategorie(k);

            verwaltung.deleteKategorie(k);
             */

            /*
            Vector<Kalendereintrag> tempkal = new Vector<Kalendereintrag>();
            tempkal.addElement(verwaltung.createKalendereintrag("TEST LoeschenKalendereintrag 1", kategorien.elementAt(2), verwaltung.getBenutzerMitID(2),
            "Meeting Test", "W114", new Date(2012,12,17), new Time(15,0,0),new Date(2012,12,18), new Time(15,0,0),
            false, 0, false, verwaltung.getAlleBenutzer(), null));
            tempkal.addElement(verwaltung.createKalendereintrag("TEST LoeschenKalendereintrag 2", kategorien.elementAt(2), verwaltung.getBenutzerMitID(2),
            "Meeting Test", "W114", new Date(2012,12,17), new Time(15,0,0),new Date(2012,12,18), new Time(15,0,0),
            false, 0, false, verwaltung.getAlleBenutzer(), null));

            Kalender kal = verwaltung.createKalender("TEST Loesche Kalender",
            tempkal, verwaltung.getAlleBenutzer(), verwaltung.getBenutzerMitID(1));


            Kalender k = verwaltung.getKalenderMitID(4);
            verwaltung.deleteKalender(k);
            */
             
            // Kalender auslesen testen
/*
            Vector<Kalender> kalender = verwaltung.getAlleKalender();
            System.out.println("Ausgabe aller Kalender aus der DB");
            System.out.println("Anzahl Kalender: "+kalender.size());
            for(int i = 0; i < kalender.size(); i++){
            System.out.println("---------------------------------------------");
            System.out.println("Name: "+kalender.elementAt(i).getName());
            System.out.println("ID: "+kalender.elementAt(i).getKalenderID());
            System.out.println("Besitzer: "+kalender.elementAt(i).getBesitzer().getBenutzername());
            System.out.println("______"+kalender.elementAt(i).getBenutzer().size()+"_Benutzer_____________________________");
            for(int j = 0; j < kalender.elementAt(i).getBenutzer().size(); j++){
            System.out.println("- Benutzer: "+kalender.elementAt(i).getBenutzer().elementAt(j).getBenutzername());
            }
            System.out.println("______"+kalender.elementAt(i).getKalendereintraege().size()+"_Kalendereinträge____________________");
            for(int k = 0; k < kalender.elementAt(i).getKalendereintraege().size(); k++){
            System.out.println("- Eintrag: "+kalender.elementAt(i).getKalendereintraege().elementAt(k).getTitel());
            System.out.println("    - Kategorie: "+kalender.elementAt(i).getKalendereintraege().elementAt(k).getKategorie().getBezeichnung());
            if(kalender.elementAt(i).getKalendereintraege().elementAt(k).getFolgetermin() != null){
            System.out.println("    - Folgetermin: "+kalender.elementAt(i).getKalendereintraege().elementAt(k).getFolgetermin().getTitel());
            }
            }
            }

            /*
            /* //Insert Benutzer Test:
            Benutzer b = verwaltung.createBenutzer("Nickname", "Nick", "Name", "WN-114", "email@email.de", "07032/43123", false);
            System.out.println("Benutzer angelegt:");
            System.out.println("ID: "+b.getBenutzerID());
            System.out.println("Name: "+b.getVorname()+ " "+b.getNachname());
            System.out.println("Nickname: "+b.getBenutzername());
            System.out.println("Raum: "+b.getRaum());
            System.out.println("Tel.Nr.: "+b.getTelefon());


            //Benutzer Update Test:
            Benutzer b2 = verwaltung.getBenutzerMitID(b.getBenutzerID());
            b2.setBenutzername("Pimmelmann");
            verwaltung.updateBenutzer(b2);
            System.out.println("Benutzer angelegt:");
            System.out.println("ID: "+b2.getBenutzerID());
            System.out.println("Name: "+b2.getVorname()+ " "+b2.getNachname());
            System.out.println("Nickname: "+b2.getBenutzername());
            System.out.println("Raum: "+b2.getRaum());
            System.out.println("Tel.Nr.: "+b2.getTelefon());

            //Delete Benutzer Test:
            verwaltung.deleteBenutzer(b2);
             */

            /*   //Kalender von bestimmten Benuter holen testen
            int b_id = 1;
            Vector<Kalender> k = verwaltung.getAlleKalenderVonSuperbenutzer(b_id);
            System.out.println("Ausgabe aller Kalender des Benutzers mit der ID = " + b_id);
            for (int i = 0; i < k.size(); i++) {
                System.out.println("___________________________________");
                System.out.println("___________________________________");
                System.out.println("Kalender ID:" + k.elementAt(i).getKalenderID());
                System.out.println("Name: " + k.elementAt(i).getName());
                System.out.println("Anzahl der Kalendereinträge: " + k.elementAt(i).getKalendereintraege().size());
                for (int a = 0; a < k.elementAt(i).getKalendereintraege().size(); a++) {
                    System.out.println("Kalendereintrag_ID:" + k.elementAt(i).getKalendereintraege().elementAt(a).getKalendereintragID());


                    System.out.println("Titel:" + k.elementAt(i).getKalendereintraege().elementAt(a).getTitel());
                    System.out.println("Ersteller:" + k.elementAt(i).getKalendereintraege().elementAt(a).getErsteller());
                    System.out.println("Beschreibung:" + k.elementAt(i).getKalendereintraege().elementAt(a).getBeschreibung());
                    System.out.println("Ort:" + k.elementAt(i).getKalendereintraege().elementAt(a).getOrt());
                    System.out.println("Startdatum:" + k.elementAt(i).getKalendereintraege().elementAt(a).getStartdatum());
                    System.out.println("Enddatum:" + k.elementAt(i).getKalendereintraege().elementAt(a).getEnddatum());
                    System.out.println("Startzeit:" + k.elementAt(i).getKalendereintraege().elementAt(a).getStartzeit());
                    System.out.println("Endzeit:" + k.elementAt(i).getKalendereintraege().elementAt(a).getEndzeit());
                   //System.out.println("Erinnerung:" +k.elementAt(i).getKalendereintraege().elementAt(a).getErinnerung());
                   //System.out.println("Teilnehmer:" +k.elementAt(i).getKalendereintraege().elementAt(a).getTeilnehmer());
                   //System.out.println("Folgetermin:" +k.elementAt(i).getKalendereintraege().elementAt(a).getFolgetermin());
                   //System.out.println("Alarm:" +k.elementAt(i).getKalendereintraege().elementAt(a).getAlarm()));
                }
                    System.out.println("Anzahl der Benutzer: " + k.elementAt(i).getBenutzer().size());
                     for (int b = 0; b < k.elementAt(i).getBenutzer().size(); b++) {
                    System.out.println("Benutzername:" + k.elementAt(i).getBenutzer().elementAt(b).getBenutzername());
                    System.out.println("Benutzer_ID:" + k.elementAt(i).getBenutzer().elementAt(b).getBenutzerID());
                    System.out.println("Vorname:" + k.elementAt(i).getBenutzer().elementAt(b).getVorname());
                    System.out.println("Nachname:" + k.elementAt(i).getBenutzer().elementAt(b).getNachname());
                    System.out.println("Raum:" + k.elementAt(i).getBenutzer().elementAt(b).getRaum());
                    System.out.println("E-Mail:" + k.elementAt(i).getBenutzer().elementAt(b).getEmail());
                    System.out.println("Telefon:" + k.elementAt(i).getBenutzer().elementAt(b).getTelefon());
                  //System.out.println("Superbenutzer:" +k.elementAt(i).getBenutzer().elementAt(b).getSuperbenutzer());

                }
                    System.out.println("Der Besitzer: " + k.elementAt(i).getBesitzer().getBenutzername());
                    System.out.println("Benutzer_ID: " + k.elementAt(i).getBesitzer().getBenutzerID());
                    System.out.println("Vorname: " + k.elementAt(i).getBesitzer().getVorname());
                    System.out.println("Nachname: " + k.elementAt(i).getBesitzer().getNachname());
                    System.out.println("Raum: " + k.elementAt(i).getBesitzer().getRaum());
                    System.out.println("E-Mail: " + k.elementAt(i).getBesitzer().getEmail());
                    System.out.println("Telefon: " + k.elementAt(i).getBesitzer().getTelefon());
                  //System.out.println("Superbenutzer: " + k.elementAt(i).getBesitzer().getSuperbenutzer());
               */


            

        } catch (MalformedURLException murle) {
            System.out.println("MalformedURLException");
            System.out.println(murle);
        } catch (RemoteException re) {
            System.out.println("RemoteException");
            System.out.println(re);
        } catch (NotBoundException e) {
            System.out.println("NotBoundException");
            System.out.println(e);
        }
    }
}
